import java.awt.*;
import java.awt.event.*;
import javax.swing.*; 
//óΪСΪJApplet
public class MouseKeyEventDemo extends JApplet{       
private int lastX=0,lastY=0;                                        //ڼ¼һελ
// init()ΪʼСеķ 
public void init(){
	   addMouseListener(new RecordFocus());            //ӻȡλõļ
	   addMouseMotionListener(new DrawLine());     //϶껭ߵļ
	   addKeyListener(new DrawChar());                    //ûʾַļ
        }
//˷¼λ 
        protected void record(int x,int y){                             
	   lastX=x;
	   lastY=y;
}
// ¼
private class RecordFocus extends MouseAdapter{
                          //¼
	   public void mouseEntered(MouseEvent e){
      	           record(e.getX(),e.getY());                               //¼λ
    	   }
                      //갴¼
                public void mousePressed(MouseEvent e){
      	           record(e.getX(),e.getY());                              //¼λ
    	   }
        } 
        private class DrawLine extends MouseMotionAdapter{
                      //ק¼
	   public void mouseDragged(MouseEvent e){
      	           Graphics g=getGraphics();                             //õͼζg
      	           g.setColor(Color.red);                                    //ûɫΪɫ
      	           int x=e.getX();                                                //ȡǰλú
      	           int y=e.getY();                                                //ȡǰλ
      	           g.drawLine(lastX,lastY,x,y);                          //ǰλü仭
      	           record(x,y);                                                     //¼ǰλ
    	   }
         }
//¼
         private class DrawChar extends KeyAdapter{
                      //̰¼
	   public void keyTyped(KeyEvent e){
      	           Graphics g=getGraphics();                              //õͼζg
      	           g.setColor(Color.blue);                                   //ûɫΪɫ
      	           String s=String.valueOf(e.getKeyChar());     //ȡַ
      	           g.drawString(s,lastX,lastY);                           //ڵǰλûַ
      	           record(lastX+8,lastY);                                   //¼µĽλ
    	   }
   }
}
